package com.zenith.article.po.dto;

import com.zenith.common.base.BaseDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "文章DTO", description = "文章DTO")
public class ArtArticleDTO extends BaseDTO {
    
    @Schema(description = "主键ID")
    private Long id;
    
    @Schema(description = "文章标题")
    private String title;
    
    @Schema(description = "副标题")
    private String subTitle;
    
    @Schema(description = "作者用户ID")
    private Long authorId;
    
    @Schema(description = "所属分类ID")
    private Long categoryId;
    
    @Schema(description = "所属专题ID")
    private Long topicId;
    
    @Schema(description = "文档类型：1-富文本 2-Markdown 3-协同文档")
    private Integer docType;
    
    @Schema(description = "协同编辑Token")
    private String editorToken;
    
    @Schema(description = "文章摘要")
    private String summary;
    
    @Schema(description = "封面图URL")
    private String coverUrl;
    
    @Schema(description = "正文内容OSS地址")
    private String contentUrl;
    
    @Schema(description = "字数")
    private Integer wordCount;
    
    @Schema(description = "阅读量")
    private Long readCount;
    
    @Schema(description = "点赞量")
    private Long likeCount;
    
    @Schema(description = "收藏量")
    private Long collectCount;
    
    @Schema(description = "评论数")
    private Long commentCount;
    
    @Schema(description = "分享量")
    private Long shareCount;
    
    @Schema(description = "是否原创：1-是 0-否")
    private Integer isOriginal;
    
    @Schema(description = "是否置顶：1-是 0-否")
    private Integer isTop;
    
    @Schema(description = "是否精华：1-是 0-否")
    private Integer isElite;
    
    @Schema(description = "阅读级别：0-普通 1-会员 2-付费")
    private Integer level;
    
    @Schema(description = "付费金额（元）")
    private BigDecimal price;
    
    @Schema(description = "综合评分")
    private BigDecimal score;
    
    @Schema(description = "SEO标题")
    private String seoTitle;
    
    @Schema(description = "SEO关键词")
    private String seoKeywords;
    
    @Schema(description = "SEO描述")
    private String seoDescription;
    
    @Schema(description = "发布时间")
    private Date publishTime;
    
    @Schema(description = "下线时间")
    private Date offlineTime;
    
    @Schema(description = "文章状态：0-草稿 1-已发布 2-下线 3-撤回 4-定时发布")
    private Integer status;
    
    @Schema(description = "扩展信息（JSON）")
    private String extJson;
    
    @Schema(description = "标签ID列表")
    private List<Long> tagIds;
    
    @Schema(description = "创建时间")
    private Date createTime;
    
    @Schema(description = "更新时间")
    private Date updateTime;
    
    @Schema(description = "创建人ID")
    private Long createBy;
    
    @Schema(description = "更新人ID")
    private Long updateBy;
    
    @Schema(description = "版本号")
    private Integer version;
    
    @Schema(description = "是否删除（0-未删除，1-已删除）")
    private Integer isDeleted;
}